#ifndef __PROC_KEY_H
#define __PROC_KEY_H

#include "my_define.h"

#define KEY_NUM 3

typedef volatile struct
{
	struct{
		//以下状态由按键扫描函数使用，外部不可修改
		u8 lock_1s:1;		//长按状态锁
		u8 lock_2s:1;	
		u8 lock_6s:1;	
		u8 press:1;			//按下状态
		u8 double_scan:1;	//等待双击
		
		//以下状态由按键任务使用，用完清除
		u8 key_short:1;		//短按
		u8 long_1s:1;		//长按1s
		u8 long_2s:1;	
		u8 long_6s:1;	
		u8 key_double:1;	//双击
	}flags;	
	u8 count;				//用来消抖
	u16 double_ticks_10ms;	//用来检测双击
	u16 long_ticks_10ms;	//用来检测长按
}my_key_t;

extern my_key_t mkey[KEY_NUM];

void key_scan(void);
void Task_key(void);
u8 read_key_port(u8 n);

#endif
